home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et3_0-a1.lha / et3 / src / Fields.h < prev    next >
C/C++ Source or Header  |  1992-07-20  |  6KB  |  220 lines

  1. #ifndef Field_First
  2. #ifdef __GNUG__
  3. //pragma once
  4. #pragma interface
  5. #endif
  6. #define Field_First
  7.  
  8. #include "VObject.h"
  9.  
  10. class Clipper;
  11. class RegularExp;
  12. class TextView;
  13. class EditField;
  14. class Text;
  15.  
  16. enum EditFieldFlags {
  17.     eEditFieldHasOverlay = BIT(eVObjLast+1),
  18.     eEditFieldNoBorder   = BIT(eVObjLast+2),
  19.     eEditFieldDefault    = eVObjDefault,
  20.     eEditFieldLast       = eVObjLast+2
  21. };
  22.  
  23. //---- TextViewOverlay ---------------------------------------------------------
  24.  
  25. class TextViewOverlay {
  26.     Clipper *cl;
  27.     TextView *tv;
  28.     EditField *currentfield;
  29.     Text *ct;
  30.     bool noupdate;
  31. public:
  32.     TextViewOverlay();
  33.     ~TextViewOverlay();
  34.     bool Draw(EditField *ef, Rectangle r);
  35.     void Update(EditField *ef);
  36.     void SetOrigin(EditField *ef, Point at);
  37.     void SetExtent(EditField *ef, Point e);
  38.     Command *DispatchEvents(EditField *ef, Point lp, Token &t, Clipper *vf);
  39.     bool KbdFocus(EditField *ef, bool in, bool wordwrap);
  40.     bool CopyInStr(EditField *ef, char *buf, int sz);
  41.     bool Size(EditField *ef, int *sz);
  42.     bool Sync(EditField *ef);
  43.     void DoSetupMenu(EditField *ef, Menu*);
  44.     Command *DoMenuCommand(EditField *, int c);
  45. };
  46.  
  47. //---- Field -------------------------------------------------------------------
  48.  
  49. class Field : public VObject {
  50. public:
  51.     MetaDef(Field);
  52.  
  53.     Field(int minwidth= 0, Font *f= gSysFont);
  54.     Field(int id, int minwidth= 0, Font *f= gSysFont);
  55.     void Init(int mw, Font *f);
  56.  
  57.     Metric GetMinSize();
  58.     void SetEditable(bool e);
  59.     Font *GetFont()
  60.     { return font; }
  61.     void SetFont(Font *fp);
  62.     void Draw(Rectangle);
  63.     virtual char *GetStringForDrawing();
  64.     int Compare(Object *op);
  65.     bool IsEqual(Object *op);
  66.     OStream& PrintOn(OStream&);
  67.     IStream& ReadFrom(IStream&);
  68.  
  69. protected:
  70.     virtual int GetLines();
  71.     Font *font;
  72.     int minwidth;
  73. };
  74.  
  75. //---- EditField ---------------------------------------------------------------
  76.  
  77. class EditField: public Field {
  78. public:
  79.     MetaDef(EditField);
  80.     
  81.     EditField(int id, int minwidth= 0, Font *f= gSysFont);
  82.     ~EditField();
  83.     
  84.     TextViewOverlay *GetTextViewOverlay();
  85.     void Draw(Rectangle);
  86.     bool KbdFocus(bool in);
  87.     virtual bool ValidateString(char *s);
  88.     Command *Input(Point lp, Token &t, Clipper *vf);
  89.     Command *DispatchEvents(Point lp, Token &t, Clipper *vf);
  90.     void SetOrigin(Point at);
  91.     void SetExtent(Point e);
  92.     void Control(int id, int part, void *val);
  93.     virtual char *GetStringForEditing();
  94.     void Update(bool redraw);
  95.     bool HasOverlay()
  96.     { return TestFlag(eEditFieldHasOverlay); }
  97.     void Sync();
  98.     void DoSetupMenu(Menu*);
  99.     Command *DoMenuCommand(int c);
  100.     void Open(bool mode);
  101. };
  102.  
  103. //---- TextField ---------------------------------------------------------------
  104.  
  105. class TextField: public EditField {
  106. public:
  107.     MetaDef(TextField);
  108.     
  109.     TextField(int id, int minWidthInChars, Font *f= gSysFont);
  110.     ~TextField();
  111.     char *AsString();
  112.     void SetString(char*, bool redraw= FALSE);
  113.     void SetFString(bool redraw, char *fmt, ...);
  114.     bool ValidateString(char *s);
  115.     OStream& PrintOn(OStream&);
  116.     IStream& ReadFrom(IStream&);
  117.     
  118.     //obsolete; for compatibility with EditTextItem
  119.     TextField(int id, int minWidthInPixel, char *t);
  120.     int GetTextSize();
  121.     void GetString(char *buf, int sz);
  122.     char *GetString();
  123. protected:
  124.     char *text;
  125. };
  126.  
  127. //---- MultiLineField ----------------------------------------------------------
  128.  
  129. class MultiLineField : public TextField {
  130. public:
  131.     MetaDef(MultiLineField);
  132.     MultiLineField(int id, int l, int minwidth= 0, char *t="");
  133.     
  134.     OStream& PrintOn(OStream&);
  135.     IStream& ReadFrom(IStream&);
  136. protected:
  137.     int GetLines();
  138.     
  139.     int lines;
  140. };
  141.  
  142. //---- FormatField -------------------------------------------------------------
  143.  
  144. class FormatField: public EditField {
  145. public:
  146.     MetaDef(FormatField);
  147.     
  148.     FormatField(int id, char *fmt);
  149.     ~FormatField();
  150.     OStream& PrintOn(OStream&);
  151.     IStream& ReadFrom(IStream&);
  152. protected:
  153.     char *format;
  154. };
  155.  
  156. //---- IntField ----------------------------------------------------------------
  157.  
  158. class IntField: public FormatField {
  159. public:
  160.     MetaDef(IntField);
  161.     
  162.     IntField(int id, int minval= -cMaxInt, int maxval= cMaxInt, char *fmt= "%d");
  163.     IntField(int id, int val, int minval, int maxval, char *fmt= "%d");
  164.     void Init(int val, int minval, int maxval);
  165.     int GetValue();
  166.     bool SetValue(int, bool redraw= TRUE);
  167.     void SetRange(int min, int max);
  168.     void GetRange(int &min, int &max);
  169.     bool ValidateString(char *s);
  170.     OStream& PrintOn(OStream&);
  171.     IStream& ReadFrom(IStream&);
  172.     char *AsString();
  173.     char *GetStringForDrawing();
  174. protected:
  175.     int value, minVal, maxVal;
  176. };
  177.  
  178. //---- FloatField --------------------------------------------------------------
  179.  
  180. class FloatField: public FormatField {
  181. public:
  182.     MetaDef(FloatField);
  183.     
  184.     FloatField(int id, double minval, double maxval, char *fmt= "%g");
  185.     FloatField(int id, double val, double minval, double maxval, char *fmt= "%g");
  186.     void Init(double val, double minval, double maxval);
  187.     double GetValue();
  188.     bool SetValue(double, bool redraw= TRUE);
  189.     void SetRange(double min, double max);
  190.     void GetRange(double &min, double &max);
  191.     bool ValidateString(char *s);
  192.     OStream& PrintOn(OStream&);
  193.     IStream& ReadFrom(IStream&);
  194.     char *AsString();
  195.     char *GetStringForDrawing();
  196. protected:
  197.     double value, minVal, maxVal;
  198. };
  199.  
  200. //---- RegExpField ----------------------------------------------------------
  201.  
  202.  
  203. class RegExpField : public TextField {
  204. public:
  205.     MetaDef(RegExpField);
  206.     RegExpField(int id, RegularExp *rex, int mw= 0, char *msg= 0, char *t= "");
  207.     ~RegExpField();
  208.     
  209.     OStream& PrintOn(OStream&);
  210.     IStream& ReadFrom(IStream&);
  211. protected:
  212.     bool ValidateString(char *s);
  213. private:
  214.     RegularExp *regex;
  215.     char *errmsg;
  216. };
  217.  
  218. #endif
  219.  
  220.